
package com.jf.cloud.combo.mapper;

import com.jf.cloud.api.combo.vo.ComboSkuVo;
import com.jf.cloud.combo.model.ComboSpuSku;
import com.jf.cloud.common.product.vo.ComboSpuSkuVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

/**
 * 套餐商品sku项
 *
 * @author zz
 * @date 2022-08-16 09:18:06
 */
public interface ComboSpuSkuMapper {

    /**
     * 获取套餐商品sku项列表
     * @return 套餐商品sku项列表
     */
    List<ComboSpuSku> list();

//    /**
//     * 根据套餐商品sku项id获取套餐商品sku项
//     *
//     * @param comboSpuId 套餐商品sku项id
//     * @return 套餐商品sku项
//     */
//    ComboSpuSku getByComboSpuId(@Param("comboSpuId") Long comboSpuId);

    /**
     * 保存套餐商品sku项
     * @param comboSpuSkuList 套餐商品sku项
     * @param comboSpuId
     */
    void save(@Param("comboSpuSkuList") List<ComboSpuSku> comboSpuSkuList,@Param("comboSpuId") Long comboSpuId);

    /**
     * 更新套餐商品sku项
     * @param comboSpuSku 套餐商品sku项
     */
    void update(@Param("comboSpuSku") ComboSpuSku comboSpuSku);

    /**
     * 根据套餐商品sku项id删除套餐商品sku项
     * @param comboSpuIdList
     */
    void deleteById(@Param("comboSpuIdList") List<Long> comboSpuIdList);

    /**
     * 根据套餐商品sku项id删除套餐商品sku项
     * @param comboSpuId
     */
    void delete(@Param("comboSpuId")Long comboSpuId);
    /**
     * 保存套餐商品sku项信息
     *
     * @param skuList
     * @param comboSpuId
     */
    void insertBatch(@Param("skuList") List<ComboSpuSku> skuList, @Param("comboSpuId") Long comboSpuId);

    /**
     * 根据套餐商品项id获取套餐商品sku项(状态为正常的）
     *
     * @param comboSpuId 套餐商品项id
     * @return 套餐商品sku项
     */
    List<ComboSpuSkuVO> getByComboSpuId(@Param("comboSpuId") Long comboSpuId);

    /**
     * 根据套餐商品项id获取套餐商品sku项(全部）
     *
     * @param comboSpuId 套餐商品项id
     * @return 套餐商品sku项
     */
    List<ComboSpuSkuVO> getByComboSpuIdS(@Param("comboSpuId") Long comboSpuId);

    /**
     * 根据套餐商品项id获取套餐商品sku项
     *
     * @param comboSpuIds 套餐商品项id列表
     * @return 套餐商品sku项
     */
    List<ComboSpuSkuVO> batchByComboSpuId(@Param("comboSpuIds") List<Long> comboSpuIds);

    /**
     * 根据套餐商品项id列表和skuID列表删除数据
     * @param comboSpuIdS
     * @param skuIdS
     */
    void deleteByComboSpuIdAndSkuId(@Param("comboSpuIdS") List<Long> comboSpuIdS,@Param("skuIdS") List<Long> skuIdS);

    /**
     * 批量更新
     * @param comboSpuSkuList
     */
    void batchUpdate(@Param("comboSpuSkuList") List<ComboSpuSku> comboSpuSkuList);

    /**
     * 根据套餐id列表和sku列表获取套餐信息
     * @param comboIdList
     * @param skuIdList
     * @return
     */
    List<ComboSkuVo> comboVoListComboAndSkuList(@Param("comboIdList") Set<Long> comboIdList, @Param("skuIdList")List<Long> skuIdList);

    /**
     * 根据套餐商品表id获取套餐商品sku信息
     * @param comboSpuId
     * @return
     */
    List<ComboSpuSkuVO> comboVoListByComboSpuId(@Param("comboSpuId") Long comboSpuId);

    /**
     * 根据套餐商品sku项id列表批量删除套餐商品sku项
     * @param comboSpuIdList
     */
    void deleteBatch(@Param("comboSpuIdList")List<Long> comboSpuIdList);

    /**
     * 根据套餐商品表id集合获取套餐商品sku信息
     * @param comboSpuIdList
     * @return
     */
    List<ComboSpuSkuVO> comboSpuSkuList(@Param("comboSpuIdList") List<Long> comboSpuIdList);

    /**
     * 根据套餐id和商品id获取套餐商品sku信息
     * @param comboId
     * @param spuId
     * @return
     */
    List<ComboSpuSkuVO> comboSpuSkuListByComboIdAndSpuId(@Param("comboId") Long comboId,@Param("spuId") Long spuId);

    /**
     * 根据套餐商品项id集合批量修改套餐商品sku项状态
     * @param comboSpuIdList
     * @param status
     */
    void batchUpdateByComboSpuIdList(@Param("comboSpuIdList") List<Long> comboSpuIdList,@Param("status") Integer status);
}
